 

/*-------------------------------------------------------------------------
 *
 * pidfile.h
 *	  描述数据目录锁定文件（postmaster.pid）的声明
 *
 * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * src/include/utils/pidfile.h
 *
 *-------------------------------------------------------------------------
 */
#ifndef UTILS_PIDFILE_H
#define UTILS_PIDFILE_H

/*
 * 截至 Postgres 10，数据目录锁文件的内容为：
 *
 * 行号 #
 *		1	postmaster PID（或独立后端 PID 的负值）
 *		2	数据目录路径
 *		3	postmaster 启动时间戳（time_t 表示）
 *		4	端口号
 *		5	第一个 Unix 套接字目录路径（如果没有则为空）
 *		6	第一个 listen_address（IP 地址或 "*"；如果没有 TCP 端口则为空）
 *		7	共享内存键（在 Windows 上为空）
 *		8	postmaster 状态（见下面的值）
 *
 * 行 6 及之后通过 AddToDataDirLockFile() 在初始文件创建后添加；
 * 此外，第 5 行最初为空，在打开第一个 Unix 套接字后更改。旁观者不
 * 应假定行 4 及之后以任何特定顺序填写。
 *
 * 套接字锁文件（如果使用）具有与第 1-5 行相同的内容，第 5 行为它们自己的目录。
 */
#define LOCK_FILE_LINE_PID			1
#define LOCK_FILE_LINE_DATA_DIR		2
#define LOCK_FILE_LINE_START_TIME	3
#define LOCK_FILE_LINE_PORT			4
#define LOCK_FILE_LINE_SOCKET_DIR	5
#define LOCK_FILE_LINE_LISTEN_ADDR	6
#define LOCK_FILE_LINE_SHMEM_KEY	7
#define LOCK_FILE_LINE_PM_STATUS	8

/*
 * PM_STATUS 行可能包含这些值之一。所有这些字符串
 * 必须具有相同的长度，详见 AddToDataDirLockFile() 的注释。
 * 我们根据需要用空格进行填充以使其成立。
 */
#define PM_STATUS_STARTING		"starting"	/* 仍在启动中 */
#define PM_STATUS_STOPPING		"stopping"	/* 在关闭序列中 */
#define PM_STATUS_READY			"ready   "	/* 准备好接受连接 */
#define PM_STATUS_STANDBY		"standby "	/* up, won't accept connections */

#endif							/* UTILS_PIDFILE_H */
